#ifndef CONFIGVIEWMANAGER_H
#define CONFIGVIEWMANAGER_H

#include <QObject>
#include <QStackedWidget>
#include <QDebug>
#include ".\configview.h"
#include ".\groupconfigview.h"
#include ".\propertyconfigview.h"
#include ".\jsonconfigview.h"
#include ".\cardconfigview.h"

// 配置视图类型
enum ConfigViewType {
    GroupView,    // 分组视图
    PropertyView, // 属性视图
    JsonView,     // JSON视图
    CardView      // 卡片视图
};

class ConfigViewManager : public QObject
{
    Q_OBJECT
public:
    explicit ConfigViewManager(QStackedWidget *stackedWidget, QObject *parent = nullptr);
    ~ConfigViewManager();

    // 设置当前视图类型
    void setCurrentView(ConfigViewType type);

    // 更新配置数据
    void updateConfig(const QJsonArray &configArray);

    // 获取修改后的配置
    QJsonArray getModifiedConfig() const;

    // 重置为原始配置
    void resetToOriginal();

    // 应用编辑的配置
    void applyEdits();

signals:
    // 配置修改信号
    void configModified();
    // 发送配置请求
    void sendConfigRequested(const QJsonArray &config);

public slots:
    // 发送当前配置
    void sendCurrentConfig();

private:
    void initViews();

private:
    QStackedWidget *m_stackedWidget; // 堆叠窗口
    GroupConfigView *m_groupView = nullptr;
    PropertyConfigView *m_propertyView = nullptr;
    JsonConfigView *m_jsonView = nullptr;
    CardConfigView *m_cardView = nullptr;
    QJsonArray m_currentConfig;      // 当前配置数据（可修改）
};

#endif // CONFIGVIEWMANAGER_H
